home *** CD-ROM | disk | FTP | other *** search
/ Aminet 5 / Aminet 5 - March 1995.iso / Aminet / misc / amag / AM9411_6.lha / XASS 64 / XAss 1.0 / Source / Transfer.src < prev    next >
Text File  |  1994-09-18  |  7KB  |  198 lines

  1. ; ***************************************
  2. ; ***                                 ***
  3. ; ***   6510-Developers-Packet V1.0   ***
  4. ; ***   Empfangsprogramm "Transfer"   ***
  5. ; ***                                 ***
  6. ; ***    programmiert von             ***
  7. ; ***          Christian Krenner      ***
  8. ; ***    (C)opyright 1992             ***
  9. ; ***    Markt & Technik Verlag AG    ***
  10. ; ***                                 ***
  11. ; ***************************************
  12.  
  13. ; !!! Unbedingt "CONVERT:C64.con" als Konvertierungstabelle verwenden !!!
  14. ; Logische Laufwerke müssen definiert sein (Assignthem).
  15. ; Als Dateinamen bei der Assemblierung dann "SOURCE:Transfer.src" angeben.
  16. ; Assemblierung erfolgt in die Datei "OBJECT:Transfer.obj".
  17. ; Braucht die Dateien "INCLD:Kernel-ROM.inc" und
  18. ;                     "INCLD:CIA.inc"
  19.  
  20. ; **********************
  21. ; *** Vorbereitungen ***
  22. ; **********************
  23.  
  24.                   .base 2049, "OBJECT:Transfer.obj"
  25.                                ;Startadresse = Basicstart
  26.                   .include "INCLD:Kernel-ROM.inc"
  27.                   .include "INCLD:CIA.inc"
  28.  
  29. ; *************************
  30. ; *** Labels und Makros ***
  31. ; *************************
  32.  
  33. STROUT            .equal $ab1e    ;Wäre auch in "INCLD:Basic-ROM.inc",
  34. INLIN             .equal $a560    ;aber so geht's schneller.
  35. LINPRT            .equal $bdcd
  36. Use               .equal $fb      ;unbenutztes Zeropage-Register
  37.  
  38.                   .macro PrintText,1   ;Text ausgeben, Param 1: Textadresse
  39.                   lda   #<?0
  40.                   ldy   #>?0
  41.                   jsr   STROUT
  42.                   .endmacro
  43.  
  44. ; ******************
  45. ; *** Basic-Kopf ***
  46. ; ******************
  47.  
  48.                   .word BK_lp1 
  49.                   .word 1992
  50.                   .byte 158
  51. ;                  .ascii " 2077 (c)1992 m&t ag"
  52.                   .ascii " 2077 (c)1994 MMedia"
  53.  
  54. BK_lp1            .byte 0,0,0
  55.  
  56. ; ************************
  57. ; *** Benutzereingaben ***
  58. ; ************************
  59.  
  60. Start             jsr   CINT           ;Bildschirmreset
  61.                   lda   #0             ;Anzahl auf 0 setzen
  62.                   sta   Anzahl
  63.                   sta   Anzahl+1
  64.  
  65.                   PrintText Text1      ;Text ausgeben
  66.  
  67. II_lp2            jsr   INLIN          ;Filenamen von Tastatur
  68.  
  69.                   PrintText Text2      ;Text ausgeben
  70.  
  71.                   ldx   #0             ;Länge des Namen ermitteln
  72. II_lp3            lda   $200,x
  73.                   beq   II_lp4
  74.                   sta   Name+2,x
  75.                   inx
  76.                   bne   II_lp3
  77. II_lp4            sta   Name+2,x
  78.                   inx
  79.                   inx
  80.                   stx   Use            ;Länge merken
  81.  
  82.                   lda   #'s            ;Scratch-Kommando
  83.                   sta   Name
  84.                   lda   #1             ;Fileparameter setzen
  85.                   ldx   #8
  86.                   ldy   #15
  87.                   jsr   SETFLSV
  88.                   lda   Use            ;Namen übergeben
  89.                   ldx   #<Name
  90.                   ldy   #>Name
  91.                   jsr   SETNAMV
  92.                   jsr   OPENV          ;File löschen
  93.                   lda   #1
  94.                   jsr   CLOSEV         ;File schließen
  95.  
  96.                   lda   #'0            ;nicht mehr scratchen
  97.                   sta   Name
  98.                   lda   #1             ;Fileparameter setzen
  99.                   ldx   #8
  100.                   ldy   #1
  101.                   jsr   SETFLSV
  102.                   lda   Use            ;Namen übergeben
  103.                   ldx   #<Name
  104.                   ldy   #>Name
  105.                   jsr   SETNAMV
  106.                   jsr   OPENV          ;File öffnen
  107.  
  108.                   PrintText Text3      ;Text ausgeben
  109.  
  110.                   ldx   #1             ;File 1 für Ausgabe setzen
  111.                   jsr   CHKOUTV
  112.  
  113. ; ***********************************
  114. ; *** Übertragung und Speicherung ***
  115. ; ***********************************
  116.  
  117. ; *** auf erstes Byte warten ***
  118.  
  119.                   sei                  ;IRQ sperren
  120. US_lp2            lda   #%00010000     ;Maske für Bit 4
  121.                   bit   CIA2+ICR       ;Auf anliegendes Byte testen
  122.                   bne   US_lp1         ;Byte da -> Byte speichern
  123.                   lda   CIA2+PRB       ;Signal ausgeben
  124.                   jmp   US_lp2         ;weiter warten
  125.  
  126. ; *** Bytes bis Timeout übertragen ***
  127.  
  128. US_lp3            ldx   #$40           ;TimeOut-Zähler High
  129.                   ldy   #0             ;TimeOut-Zähler Low
  130. US_lp4            lda   #%00010000     ;Maske für Bit 4
  131.                   bit   CIA2+ICR       ;auf anliegendes Byte testen
  132.                   bne   US_lp1         ;Byte da -> speichern
  133.                   dey                  ;kein Byte -> Zähler erniedrigen
  134.                   bne   US_lp4         ;noch nicht 0 -> warten
  135.                   dex                  ;Zähler (high) erniedrigen
  136.                   bne   US_lp4         ;noch nicht 0 -> weiter warten
  137.                   jmp   EN_lp1         ;sonst beenden
  138.  
  139. US_lp1            lda   CIA2+PRB       ;Byte vom Port holen
  140.                   cli                  ;IRQ erlauben
  141.                   jsr   CHROUTV        ;Zeichen speichern
  142.                   jsr   STOPV          ;auf Stop prüfen
  143.                   beq   EN_lp1         ;gedrückt -> beenden
  144.                   lda   Anzahl         ;Anzahl erhöhen
  145.                   clc
  146.                   adc   #1
  147.                   sta   Anzahl
  148.                   lda   Anzahl+1
  149.                   adc   #0
  150.                   sta   Anzahl+1
  151.                   sei                  ;IRQ wieder sperren
  152.                   jmp   US_lp3         ;weiter empfangen
  153.  
  154. ; ***************************
  155. ; *** Übertragung beenden ***
  156. ; ***************************
  157.  
  158. EN_lp1            cli                  ;IRQ zulassen
  159.                   jsr   CLRCHNV        ;Clear Channels
  160.                   lda   #1             ;File schließen
  161.                   jsr   CLOSEV
  162.  
  163.                   ldx   Anzahl         ;letzten Text ausgeben
  164.                   lda   Anzahl+1
  165.                   jsr   LINPRT
  166.                   PrintText Text4
  167.  
  168.                   lda   #0
  169.                   sta   198
  170. EN_lp2            lda   198
  171.                   beq   EN_lp2
  172.                   lda   #0
  173.                   sta   198
  174.  
  175.                   jmp   Start          ;Neustart
  176.  
  177. ; *************
  178. ; *** Texte ***
  179. ; *************
  180.  
  181. Text1             .byte  17,17,17
  182.                   .ascii " 6510-developers-packet transfer"
  183.                   .byte  13,13
  184.                   .ascii "name : "
  185.                   .byte  0
  186. Text2             .byte  13,13
  187.                   .ascii "eroeffne datei..."
  188.                   .byte  13,0
  189. Text3             .ascii "uebertragung laeuft..."
  190.                   .byte  13,0
  191. Text4             .ascii " bytes empfangen !"
  192.                   .byte  13,13
  193.                   .ascii "taste druecken !"
  194.                   .byte  13,0
  195. Anzahl            .word  0
  196. Name              .ascii "0:"
  197.  
  198.